package shujia.day05;

/*
    代码块：使用大括号括起来的代码段，就叫做代码块
    根据编写的方式和位置，代码块分为4种：
    局部代码块：将代码块写在方法的内部,主要作用是划分变量的作用域,同一个方法中的局部代码块之间执行顺序自上而下
    构造代码块：将代码块写在了类中方法外, 每次创建该类的对象的时候，就会执行一次，但是执行顺序：构造代码块->构造方法
    静态代码块：将代码块写在了类中方法外, 在代码块前面加上static关键字，有且仅执行一次，在所有代码运行之前执行
        执行顺序：静态代码块->构造代码块->构造方法
    同步代码块【放到后面的多线程的时候讲解】

 */
public class CodeDemo {

    CodeDemo(){
        System.out.println("这是构造方法");
    }

    //构造代码块
    {
        System.out.println("这是构造代码块");
    }

    //静态代码块
    static {
        System.out.println("这是静态代码块");
    }

    public static void main(String[] args) {

        CodeDemo codeDemo1 = new CodeDemo();
        CodeDemo codeDemo2 = new CodeDemo();

//        {
//            System.out.println(a);
//            System.out.println("hello world2");
//        }
//        //局部代码块
//        {
//            int a= 10;
//            System.out.println(a);
//            System.out.println("hello world1");
//        }


    }
}
